Program - Ray tracer
Develop and implement your own ray tracer. Your ray tracer should be a stand-alone piece of software - it should require a file with a scene in order to render something. As a minimum, your ray tracer must provide the following functionality:
- Multiple point light sources
- Triangles and sphere primitives
- Surface shading
- Shadows
- Reflections
- Acceleration structures
Your ray tracer will be developed in three stages. You must complete each stage before moving on to the next. You should submit your code to your course repository at ssh://gitter.csse.rose-hulman.edu:/srv/repos/1819c-csse451-username.
All source files must be in the 'raytracer/src' directory of your repository and there can be no unused source files. Keep your repo clean! You must not check in build artifacts; only source files. I recommend you use a gitignore file to help with this.
I will use a cmake script similar to the one in the example code directory to build your project. Please make sure your code compiles correctly with only the standard C++ 11 libraries (testing your builds on abacus may help).
At the end of each week, I will review your progress in class.
Stage 1 (50)
- Support the following:
- OBJ model loading (10)
- Arbitrary camera positions (15)
- Sphere intersection (15)
- Framebuffer output (10)
Stage 2 (50)
Support the following:
- Triangle intersection (15)
- Materials (5)
- Point light (10)
- Phong shading
- Ambient reflectance (2)
- Diffuse reflectance (3)
- Specular reflectance (5)
- Shadows (10)
Stage 3 (50)
Support the following:
- Reflections (15)
- AABB primitives (10)
- Slab intersections (5)
- Object or spatial median splitting (20)
Stage 4 (50)
Support the following:
- BVH tree creation (30)
- BVH tree traversal (20)